import {ElMessage} from "element-plus";

const fileType = {
    '压缩包': [
        ".zip",".rpm", ".rar", ".7z", ".tar", ".gz", ".bz2", ".xz", ".iso", ".cab", ".z", ".lzma", ".tgz", ".tar.gz", ".tar.bz2", ".tar.xz", ".apk", ".rar5"
    ],
    '文本': [
        ".txt",     // JavaScript
        ".conf",     // JavaScript
        ".bat",     // JavaScript
        ".js",     // JavaScript
        ".ts",     // TypeScript
        ".py",     // Python
        ".java",   // Java
        ".cpp",    // C++
        ".c",      // C
        ".h",      // C/C++ Header
        ".html",   // HTML
        ".css",    // CSS
        ".scss",   // SASS/SCSS
        ".less",   // LESS
        ".xml",    // XML
        ".json",   // JSON
        ".yaml",   // YAML
        ".yml",    // YAML (alternative extension)
        ".php",    // PHP
        ".rb",     // Ruby
        ".go",     // Go (Golang)
        ".swift",  // Swift
        ".kt",     // Kotlin
        ".dart",   // Dart
        ".rs",     // Rust
        ".r",      // R
        ".pl",     // Perl
        ".sh",     // Shell Script
        ".bat",    // Batch File (Windows)
        ".ps1",    // PowerShell Script
        ".sql",    // SQL
        ".md",     // Markdown
        ".ini",    // INI Configuration File
        ".env",    // Environment Configuration File
        ".vbs",    // VBScript
        ".asm",    // Assembly Language
        ".lua",    // Lua
        ".cmake",  // CMake Script
        ".gitignore", // Git ignore file
        ".dockerfile", // Dockerfile
        ".dockerignore", // Docker ignore file
        ".makefile", // Makefile
        ".gradle",  // Gradle build script
        ".apk",     // Android Package (can also be used for code-related files in Android development)
        ".exe",     // Executable file (often contains compiled code)
        ".class",   // Java compiled class file
        ".o",       // Object file (compiled code)
        ".a",       // Static library (often used with C/C++)
        ".dll",     // Dynamic Link Library (Windows)
        ".so",      // Shared Object (Linux/Unix)
        ".dylib"    // Dynamic Library (macOS)
    ],
    '图片': [
        ".jpg",    // JPEG图片
        ".jpeg",   // JPEG图片（与.jpg等价）
        ".png",    // PNG图片
        ".gif",    // GIF图片
        ".bmp",    // 位图图片
        ".tiff",   // TIFF图片
        ".tif",    // TIFF图片（与.tiff等价）
        ".webp",   // WebP图片
        ".svg",    // SVG矢量图
        ".heif",   // HEIF图片（High Efficiency Image Format）
        ".heic",   // HEIC图片（HEIF的容器格式）
        ".ico",    // 图标文件
        ".raw",    // 原始图片格式
        ".jfif",   // JFIF格式（常见的JPEG变种）
        ".exif",   // EXIF格式（常用于JPEG和TIFF图片中，存储元数据）
        ".avif",   // AVIF图片（基于AV1编码）
        ".eps",    // Encapsulated PostScript图形文件
        ".ai",     // Adobe Illustrator文件
        ".indd",   // Adobe InDesign文件（页面设计软件）
        ".pdf",    // PDF文档（可包含图片）
        ".psd",    // Photoshop文件
        ".tga",    // Targa图像格式
        ".pcx",    // PCX图像格式
        ".xcf"     // GIMP项目文件
    ],
    '视频': [
        ".mp4",    // MPEG-4 视频文件（最常见的视频格式）
        ".avi",    // Audio Video Interleave 格式
        ".mkv",    // Matroska 视频文件（支持多种编码格式）
        ".mov",    // Apple QuickTime 视频格式
        ".wmv",    // Windows Media Video 文件
        ".flv",    // Flash Video 格式
        ".webm",   // WebM 视频文件（主要用于网页视频播放）
        ".mpeg",   // MPEG 视频文件
        ".mpg",    // MPEG 视频文件（与.mpeg等价）
        ".3gp",    // 3GPP 视频格式（用于移动设备）
        ".ogg",    // Ogg 视频文件（通常包含Theora视频编码）
        ".vob",    // Video Object 文件（DVD视频格式）
        ".rm",     // RealMedia 视频格式
        ".rmvb",   // RealMedia Variable Bitrate 格式
        ".ts",     // MPEG Transport Stream 视频格式
        ".mp2",    // MPEG-2 视频文件
        ".m4v",    // MPEG-4 视频文件（与.mp4类似，主要用于Apple设备）
        ".f4v",    // Flash MP4 视频格式（常用于Flash播放器）
        ".svi",    // Samsung Video文件格式
        ".asf",    // Advanced Streaming Format 视频
        ".divx",   // DivX 视频格式
        ".xvid",   // Xvid 视频格式
        ".qt",     // QuickTime 文件格式（与.mov类似）
        ".iso",    // 光盘映像文件（可以包含视频内容）
        ".hdmov",  // HD Movie 文件（高分辨率电影文件格式）
        ".m2ts",   // Blu-ray 光盘的视频格式
        ".dvr-ms", // Microsoft Digital Video Recording 格式
        ".mts",    // AVCHD 视频文件格式（广泛用于高清摄像机）
        ".bik",    // Bink 视频文件格式（游戏视频格式）
        ".yuv",    // YUV 视频文件（原始视频格式）
        ".h264",   // H.264 视频文件（编码格式）
        ".hevc",   // HEVC 视频文件（高效视频编码，也叫H.265）
        ".avchd"   // AVCHD 视频格式（常用于高清摄像机）
    ],
    '音频': [
        ".mp3",    // MPEG Audio Layer III（最常见的音频格式）
        ".wav",    // Waveform Audio File 格式（无损音频格式）
        ".flac",   // Free Lossless Audio Codec（无损音频格式）
        ".aac",    // Advanced Audio Codec（常用于流媒体和移动设备）
        ".ogg",    // Ogg Vorbis 音频格式（开放源代码，无损或有损）
        ".m4a",    // MPEG-4 Audio 文件（通常用于Apple设备）
        ".wma",    // Windows Media Audio 文件（微软音频格式）
        ".alac",   // Apple Lossless Audio Codec（Apple的无损音频格式）
        ".opus",   // Opus 音频编码格式（高效音频压缩格式）
        ".aiff",   // Audio Interchange File Format（类似于WAV，用于Apple设备）
        ".amr",    // Adaptive Multi-Rate（常用于语音编码，移动设备常见）
        ".mka",    // Matroska 音频文件（用于容器格式中存储音频）
        ".ape",    // Monkey's Audio 文件格式（无损音频压缩）
        ".pcm",    // Pulse Code Modulation（原始音频数据）
        ".dsd",    // Direct Stream Digital（高解析音频格式，通常用于SACD）
        ".tta",    // True Audio 无损音频格式
        ".spx",    // Speex 音频文件格式（语音压缩格式）
        ".caf",    // Core Audio Format（Apple的音频文件格式）
        ".mid",    // MIDI 文件（音乐设备或软件合成器使用的格式）
        ".kar",    // Karaoke MIDI 文件（带有歌词的MIDI文件）
        ".sid",    // Commodore 64 SID 音频文件（经典游戏音频格式）
        ".vqf",    // TwinVQ（有损音频压缩格式）
        ".smp",    // Sampled Audio File（采样音频文件）
        ".m3u",    // M3U 播放列表文件（包含音频文件路径）
        ".pls",    // PLS 播放列表文件（包含音频文件路径）
        ".xspf",   // XSPF 播放列表文件（XML格式的播放列表）
        ".flv",    // Flash Video（也可以包含音频）
        ".ac3",    // Audio Codec 3（Dolby Digital 格式，用于环绕音频）
        ".dts",    // Digital Theater Systems 音频格式（高保真音频）
        ".mpc",    // MusePack（有损音频格式，优于MP3）
        ".mod",    // MOD 音乐格式（早期的模块化音频格式）
        ".it",     // Impulse Tracker 音乐文件（模块化音乐格式）
        ".xm",     // FastTracker 2 音乐文件（模块化音频格式）
        ".sid",    // Commodore 64 SID 音频文件（经典8位音频格式）
        ".midi",   // MIDI 音乐文件（用于乐器编程或播放）
        ".wpl",    // Windows Media Player 播放列表
        ".cue",    // CUE 播放列表文件（通常与音频CD或音频文件一起使用）
        ".rmp",    // RealMedia 音频格式
        ".bwf",    // Broadcast Wave Format（广播音频格式）
        ".3gp",    // 3GPP 格式（移动设备音频格式，通常与视频一起）
        ".fla",    // Flash 音频文件（与.FLV文件一起）
        ".aif",    // AIFF 音频文件（音频交换格式，常用于Mac）
        ".msv",    // Minidisc 音频文件
        ".f4a",    // Flash 音频（常用于流媒体）
        ".ram",    // Real Audio 文件（RealPlayer 格式）
        ".wv",     // WavPack（无损音频格式）
        ".nra",    // Nellymoser 音频格式
        ".xmf",    // eXtensible Music File（音乐音频文件）
        ".m4b",    // MPEG-4 Audio Book 文件（适用于有声书）
        ".cda",    // CD 音轨文件（音频光盘中的音轨文件）
        ".ncs"     // Noise Compression Scheme 音频格式
    ],
    '文档': [".doc", ".docx", '.xlsx', '.xls']
}
export default {
    copyText(innerText){
        // 创建一个临时的textarea元素
        var textarea = document.createElement('textarea');
        textarea.value = innerText;

        // 将textarea元素添加到页面中
        document.body.appendChild(textarea);

        // 选中textarea中的文本
        textarea.select();

        // 执行复制操作
        try {
            // 尝试复制到剪贴板
            document.execCommand('copy');
            ElMessage.success('复制成功')
        } catch (err) {
            ElMessage.success('复制失败')
        }

        // 移除临时textarea元素
        document.body.removeChild(textarea);
    },
    returnFileType(type, name) {
        console.log(type,name)
        let prefix = '.' + name.split('.')[name.split('.').length - 1]
        prefix = prefix.toLowerCase()
        return fileType[type].includes(prefix)
    },
    set(name, value) {
        if (typeof value === 'object') {
            value = JSON.stringify(value)
        }
        localStorage.setItem(name, value)
    },
    get(name, type) {
        let data = localStorage.getItem(name)
        if (type === 'json') {
            if (data) data = JSON.parse(data)
            else data = null
        }
        if (type === 'array') {
            if (data) data = JSON.parse(data)
            else data = []
        }
        if (type === 'number') {
            if (data) data = Number(data)
            else data = null
        }
        return data
    },
    renderSize(filesize) {
        if (null == filesize || filesize == '') {
            return "0 Bytes";
        }
        var unitArr = new Array(" bytes", " kb", " mb", " g", " t", "PB", "EB", "ZB", "YB");
        var index = 0;
        var srcsize = parseFloat(filesize);
        index = Math.floor(Math.log(srcsize) / Math.log(1024));
        var size = srcsize / Math.pow(1024, index);
        size = size.toFixed(2);//保留的小数位数
        return Number(size) + unitArr[index];
    },
    imgSrcSftp(row) {

        if (row.is_folder === 1) {
            return new URL('../assets/folder.png', import.meta.url).href
        } else {
            let prefix = ('.' + row.filename.split('.')[row.filename.split('.').length - 1]).toLowerCase()
            if (fileType['压缩包'].includes(prefix)) {
                return new URL('../assets/zip.png', import.meta.url).href
            } else if (fileType['文本'].includes(prefix)) {
                return new URL('../assets/code.png', import.meta.url).href
            } else if (fileType['图片'].includes(prefix)) {
                return new URL('../assets/image.png', import.meta.url).href
            } else if (['.pdf'].includes(prefix)) {
                return new URL('../assets/pdf.png', import.meta.url).href
            } else if (fileType['文档'].includes(prefix)) {
                return new URL('../assets/doc.png', import.meta.url).href
            } else if (fileType['视频'].includes(prefix)) {
                return new URL('../assets/video.png', import.meta.url).href
            } else if (fileType['音频'].includes(prefix)) {
                return new URL('../assets/audio.png', import.meta.url).href
            } else {
                return new URL('../assets/file.png', import.meta.url).href
            }
        }
    },
    imgSrc(row) {
        if (row.is_folder === 1) {
            return new URL('../assets/folder.png', import.meta.url).href
        } else {
            let prefix = ('.' + row.name.split('.')[row.name.split('.').length - 1]).toLowerCase()
            if (fileType['压缩包'].includes(prefix)) {
                return new URL('../assets/zip.png', import.meta.url).href
            } else if (fileType['文本'].includes(prefix)) {
                return new URL('../assets/code.png', import.meta.url).href
            } else if (fileType['图片'].includes(prefix)) {
                return new URL('../assets/image.png', import.meta.url).href
            } else if (['.pdf'].includes(prefix)) {
                return new URL('../assets/pdf.png', import.meta.url).href
            } else if (fileType['文档'].includes(prefix)) {
                return new URL('../assets/doc.png', import.meta.url).href
            } else if (fileType['视频'].includes(prefix)) {
                return new URL('../assets/video.png', import.meta.url).href
            } else if (fileType['音频'].includes(prefix)) {
                return new URL('../assets/audio.png', import.meta.url).href
            } else {
                return new URL('../assets/file.png', import.meta.url).href
            }
        }
    }
}
